/**
 * ZHU framework. Copyright 2012-, all rights reserved.
 *
 * $Id: AbstractWebSessionContext.java 24 2012-08-17 07:21:26Z zhuxiaopeng $
 * $Revision: 24 $
 * $Date: 2012-08-17 15:21:26 +0800 (五, 2012-08-17) $
 * $Author: zhuxiaopeng $
 */
package zhu.framework.web;

import java.io.*;
import java.util.logging.*;

import zhu.framework.util.*;
import daily.entity.*;

/**
 * <p>
 * </p>
 * 
 * @author $Author: zhuxiaopeng $
 * @version $Revision: 24 $ - $Date: 2012-08-17 15:21:26 +0800 (五, 2012-08-17) $
 */
public abstract class AbstractWebSessionContext implements WebSessionContext, Serializable {
	/**
	 * <h3>スレッドセーフ性</h3>
	 * <p>
	 * この変数は<code>this</code>によってGuardされる。 この変数は<code>final</code>
	 * であり、参照先がスレッドセーフであるため、スレッドセーフ性を破ることはない。
	 * この変数の参照先はスレッドセーフ<strong>ではない</strong>。
	 * </p>
	 */
	private static final long serialVersionUID = 1L;

	static private Logger getLogger() {
		final LoggerManager manager = LoggerManager.getInstance();
		final Logger logger = manager.getLogger(AbstractWebSessionContext.class);
		return logger;
	}

	public AbstractWebSessionContext(final Staff loginStaff) {
		this.loginStaff = loginStaff;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see zhu.framework.web.WebSessionContext#destroy()
	 */
	@Override
	public void destroy() {
		final Logger logger = getLogger();
		if (logger.isLoggable(Level.FINE)) {
			logger.fine(String.format("WebSessionContext (id=%s) is being destroyed", getId()));
		}
	}

	/**
	 * <p>
	 * プロパティ<code>loginStaff</code>の値を取得する。
	 * </p>
	 * 
	 * @return プロパティ<code>loginStaff</code>の値
	 */
	@Override
	public Staff getLoginStaff() {
		return loginStaff;
	}

	private final Staff loginStaff;
}
